/**
 * 1 页面被打开的时候 使用onShow(因为需要频繁打开)
 *  0 onShow 不同于onLoad 无法在形参上接收 options参数
 *  1 判断缓存中有没有token值 
 *    1 没有 直接跳转到授权页面
 *    2 有 直接往下进行
 *  2 获取url上的参数type
 *  3 根据type来决定页面标题的数组元素 哪个被激活选中
 *  4 根据type值 去发送请求获取订单数据
 *  5 渲染页面
 * 2 点击不同的标题 重新阿松请求和渲染数据
 */
import {request} from '../../request/index.js';
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({
  /**
   * 页面的初始数据
   */
  data: {
    tabs: [
      {
        id: 0,
        value: '全部',
        isActive: true
      },
      {
        id: 1,
        value: '待付款',
        isActive: false
      },
      {
        id: 2,
        value: '待发货',
        isActive: false
      },
      {
        id: 3,
        value: '退款/退货',
        isActive: false
      }
    ],
    //存放请求过来的数据
    orders: []  
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow(options) {
    // 获取token
    const token = wx.getStorageSync("token");
    if (!token) {
      wx.navigateTo({
        url: '/pages/auth/index'
      })
      return   
    }  

    //1 获取当前的小程序的页面栈 长度最大是10个页面
    let pages =  getCurrentPages();
    //2 数组中 索引最大的页面就是当前页面
    let currentPage = pages[pages.length - 1]
    //3 获取url上的type参数
    const {type} = currentPage.options;
    //4 激活选中页面标题
    this.changeTitleByIndex(type-1)
    this.getOrders(type)
  },
  // 获取订单列表的方法
  async getOrders(type) {
    const res = await request({url:"/my/orders/all",data:{type}})
    console.log(res);
    this.setData({
      orders: res.orders.map(v => ({...v,create_time_cn:(new Date(v.create_time * 1000).toLocaleString())}))
    })
  },
  //根据标题索引来激活选中 标题数组
  changeTitleByIndex(index) {
    const {tabs} = this.data
    tabs.forEach((v,i) => i === index ? v.isActive = true : v.isActive = false)
    this.setData({
      tabs
    })
  },
  //子向父传递的点击事件
  handleItenClick(e) {
    //1 获取被点击的标题索引
    let {index} = e.detail
    this.changeTitleByIndex(index)
    //2 重新发送请求 type=1 index=0
    this.getOrders(index+1)
  }
})